package com.clouddms.service.common;

/**
 * Cloud-DMS 服务基础接口
 * 所有业务服务都应该实现此接口
 *
 * @author Cloud-DMS Team
 * @version 1.0.0
 */
public interface IService {

    /**
     * 获取服务名称
     */
    String getServiceName();

    /**
     * 获取服务显示名称
     */
    String getDisplayName();

    /**
     * 获取服务描述
     */
    String getDescription();

    /**
     * 获取服务当前状态
     */
    ServiceStatus getStatus();

    /**
     * 获取服务优先级（用于排序显示）
     */
    default int getPriority() {
        return 100;
    }

    /**
     * 获取服务版本
     */
    default String getVersion() {
        return "1.0.0";
    }

    /**
     * 检查服务是否可用
     */
    default boolean isAvailable() {
        ServiceStatus status = getStatus();
        return status == ServiceStatus.RUNNING ||
                status == ServiceStatus.DEBUGGING ||
                status == ServiceStatus.DEVELOPING;
    }

    /**
     * 获取服务健康状态
     */
    default HealthStatus getHealthStatus() {
        return new HealthStatus(isAvailable(), getStatus().getDescription());
    }

    /**
     * 服务健康状态类
     */
    class HealthStatus {
        private final boolean healthy;
        private final String message;

        public HealthStatus(boolean healthy, String message) {
            this.healthy = healthy;
            this.message = message;
        }

        public boolean isHealthy() {
            return healthy;
        }

        public String getMessage() {
            return message;
        }
    }
}
